在 NumPy 中, 精確度管理 是刻意選擇位元深度以平衡記憶體效率與數值正確性的做法。與具有任意精度的標準 Python 整數不同,NumPy 使用固定大小的 C 類型(例如, int32_t、 uint64_t)。
1. 資料型態層級
NumPy 的資料型態定義了記憶體佔用空間。雖然 np.int_() 會根據平台提供不同的大小,但穩健的系統則依賴於 固定大小別名 (第 34 頁表格)來確保跨硬體的一致性。
- 整數:
int8_t、int16_t、int32_t、int64_t。 - 無符號:
uint8_t至uint64_t。 - 指標:
intptr_t、uintptr_t。
2. 採查工具
執行算術運算前,請使用 np.iinfo() 和 np.finfo() 來檢視範圍界限。例如, 1 + np.finfo(np.longdouble).eps 可識別機器浮點數的最小單位——即加法不再改變數值的臨界值。
3. 溢位的運作原理
NumPy 在溢位時不會拋出錯誤;而是靜默失敗。使用 np.power(100, 8, dtype=np.int32) 會導致截斷,而 float64 則會轉為 inf。請使用 np.issubdtype(d, np.floating) 在操作前驗證資料類型是否為浮點數。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>